=--------------------------=====*#%%%%%%@@@@@%%%@%@%%%%%%%%%%%%%%%%%%
====================--=======+*%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%
=============+===+++++++++**##%%%%%%%%%%@@@%%%%%%@@%%%%%%%%%%%%%%%%%%
+++++++++++++++**++****################%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%
+++++**+++**##**************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**###******+*********###*******#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####*#**************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******#####***###***********+++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+++**********************+==+***##**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********#####**#*********+*******#########%%%%%%%%%###*#%%%%%%%%%%%
****##*###*################*##***#####*#######%%%%#####**++#%%%%%%%%%
###%##########*#####*##%##%%#############################**+########%
####################################%##%%%%####%%%%%%%%%############%
%%%%%%%%%%%%##%#%%%%%%%%%%%%##%%%%%%%%%%%%%#######%%%%%%##%##########
%%%%%%%%%%##*###%%%%%#%%%%%%%%%%%%%%%%%%%%%#####*+*###%%%###########%
%##%%%#####*########################*##%#%##%#%#++*##################
#########***##*####################**######%#*#*++##################%
##################%%%####%%%%%%%%%####%%%##%###*+*%%%%%%%%%%%%%%%%%%%
%%#############%%%%%%%%##%%%%%%%%%%%%##%###*%###*#%%%%%%%%%%%%%%%%%%%
%###########%%%%%%%%%%%###%%%%%%%%%%%%%##***%%%#**##%%%%%%%%%%%%%%%%%
%###########%%%%%%%%%%%%###%%%%%%%%%%%%%%#****%%######%%%%%%%%%%%%%%%
###%###%##########%%%%%%%%##%%%%%%%%%%%%%%%#**%%%####%%#+*%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@@@@@%##%%%%%%%%%@@@@%%@@%%%%%@